package com.zf.rocketmq.consumer.listener;

import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.apache.rocketmq.spring.core.RocketMQPushConsumerLifecycleListener;
import org.springframework.stereotype.Component;

/**
 * 消费 plain_text_topic，使用字符串接收普通文本消息。
 * <p>
 * 如果不仅要获取消息内容，还想获取消息的其它系统属性，需要怎么做：
 * 消费者在实现RocketMQListener接口时，指定泛型为 org.apache.rocketmq.common.message.MessageExt 即可，这样在onMessage方法将接收到RocketMQ原生的MessageExt消息。
 */
@Component
@RocketMQMessageListener(consumerGroup = "spring_plain_text_cg", topic = "plain_text_topic")
public class ConsumerPlanTextMsgListener implements RocketMQListener<String>, RocketMQPushConsumerLifecycleListener {
    /**
     * 该方法由 RocketMQListener 接口提供，用来消费消息。
     */
    @Override
    public void onMessage(String message) {
        System.out.printf("plain_text：%s\n", message);
    }

    /**
     * 该方法由 RocketMQPushConsumerLifecycleListener 接口提供，可以修改 消费者 的一些配置。
     * 如果没有修改配置的需求，可以不用实现 RocketMQPushConsumerLifecycleListener 接口。
     */
    @Override
    public void prepareStart(DefaultMQPushConsumer consumer) {

    }
}

// @Component
// @RocketMQMessageListener(consumerGroup = "spring_plain_text_cg", topic = "plain_text_topic")
// public class ConsumerPlanTextMsgListener implements RocketMQListener<MessageExt>, RocketMQPushConsumerLifecycleListener {
//     /**
//      * 该方法由 RocketMQListener 接口提供，用来消费消息。
//      */
//     @Override
//     public void onMessage(MessageExt message) {
//         System.out.printf("plain_text_all：%s，body：%s\n", message, new String(message.getBody()));
//     }
//
//     /**
//      * 该方法由 RocketMQPushConsumerLifecycleListener 接口提供，可以修改 消费者 的一些配置。
//      * 如果没有修改配置的需求，可以不用实现 RocketMQPushConsumerLifecycleListener 接口。
//      */
//     @Override
//     public void prepareStart(DefaultMQPushConsumer consumer) {
//
//     }
// }